我们在调用 http server 或执行 SQL/redis 命令时会打印出这些外部系统调用的耗时,以快速定位问题。随着对 grpc 使用的增多,为 grpc client 增加此功能也是很有必要的,本文章就简单介绍下处理方法。
这里以官方的例子进行说明
- 在
grpc.Dial()
中添加中间件logReqTime
1 | func main() { |
logReqTime()
实现如下
1 | func logReqTime() grpc.UnaryClientInterceptor { |
进行上述两步的修改后,每次发送请求都会执行中间件 logReqTime
,即可打印出调用耗时
- 如果需要打印出调用的 rpc server 地址,可使用
grpc.Peer()
1 | func logReqTime() grpc.UnaryClientInterceptor { |
执行结果:
1 | method[/helloworld.Greeter/SayHello] call[[::1]:50051] cost[3.072303ms] |